package br.com.werp.regras.contabilidade.integracao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.List;
import java.util.ResourceBundle;

import br.com.werp.regras.geral.Debuger;
import br.com.werp.regras.geral.integracao.MasterDAO;
import br.com.werp.regras.geral.util.Constantes;
import br.com.werp.regras.geral.vos.tabelas.Apuracao_lancamento;
import br.com.werp.regras.geral.vos.tabelas.Apuracao_resultado;


/**
 * @author Sobreira
 * Criado em 22/03/2006
 *
 */
public class ApuracaoDAO extends MasterDAO {
    private static final String APAGAR_APURACAO_LANCAMENTO = "APAGAR_APURACAO_LANCAMENTO";

    private static final String APAGAR_APURACAO_RESULTADO = "APAGAR_APURACAO_RESULTADO";
    
    private static ApuracaoDAO apuracaoDAO;

    public ApuracaoDAO(String banco) throws Exception {
        super(banco);
    }

    public static ApuracaoDAO getApuracaoDAO() throws Exception {
        if (apuracaoDAO == null) {
            ResourceBundle bundle = ResourceBundle.getBundle(Constantes.CONFIG);
            apuracaoDAO = new ApuracaoDAO(bundle.getString(Constantes.BANCO));
        }

        return apuracaoDAO;
    }

    public List pesquisarApuracao_resultado(
        Apuracao_resultado apuracao_resultado) throws Exception {
        Connection connection = getConexao();

        try {
            return pesquisarVO(connection, apuracao_resultado);
        } finally {
            liberaConeccao(connection);
        }
    }

    public List pesquisarApuracao_lancamento(
        Apuracao_lancamento apuracao_lancamento) throws Exception {
        Connection connection = getConexao();

        try {
            return pesquisarVO(connection, apuracao_lancamento);
        } finally {
            liberaConeccao(connection);
        }
    }

    public void excluirApuracao_lancamento(Object key,
        Apuracao_lancamento apuracao_lancamento) throws Exception {
        Connection connection = validarTransacao(key);
        String query = getQuery(APAGAR_APURACAO_LANCAMENTO);
        PreparedStatement statement = connection.prepareStatement(query);
        setInt(1, statement, apuracao_lancamento.getApla_encerramento());
        Debuger.debugar(statement, getClass());
        statement.executeUpdate();

    }

    public void excluirApuracao_resultado(Object key,
        Apuracao_resultado apuracao_resultado) throws Exception {
        Connection connection = validarTransacao(key);
        String query = getQuery(APAGAR_APURACAO_RESULTADO);
        PreparedStatement statement = connection.prepareStatement(query);
        setInt(1, statement, apuracao_resultado.getApre_id());
        Debuger.debugar(statement, getClass());
        statement.executeUpdate();

    }
}
